iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

重新學 Go 30 天系列 第 10

[GO30] Day10 空值(nil)和零值(zero value)

  • 分享至 

  • xImage
  •  

空值(nil)

  • 空值在 Go 中通常用於表示某些引用類型的零值,例如 pointer、slice、map 和 interface。空值表示這些引用類型不引用任何有效的數據,類似於其他編程語言中的 nullnil
  • pointer,空值表示指針不指向任何有效的記憶體地址。
  • slice 和 map,空值表示它們沒有分配任何空間。
  • interface,空值表示 interface 變數未初始化或不引用任何具體的值。
var ptr *int       
var slice []int    
var mp map[string]int 
var myInterface interface{} 

fmt.Println(ptr)         // <nil>
fmt.Println(slice)       // [] (這是 <nil>)
fmt.Println(mp)          // map[] (這是 <nil>)
fmt.Println(myInterface) // <nil>

零值(zero value):

  • 零值是指在聲明變量但未顯式初始化時,變量被賦予的默認值。Go 對於不同的資料型態有不同的零值規則。
  • 例如,資料型態的變量在聲明但未初始化時,int 默認值為0,float 為0.0,bool 為false,string 為空字符串 "",等等。
  • 自定義的 struct 的變量零值是其字段的零值。
type MyStruct struct {
	Name string
}

var i int                 
var f float64             
var b bool                
var s string              
var customStruct MyStruct 

fmt.Println(i)            // 0
fmt.Println(f)            // 0
fmt.Println(b)            // false
fmt.Println(s)            // ""
fmt.Println(customStruct) // {}


上一篇
[GO30] Day9 If else, switch case
系列文
重新學 Go 30 天10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言